	// cek apakah nama material dan jumlah dan satuan dan harga sudah diisi semua..
	var material_empty = function(id){
		var material = material_get(id);

		var satuanMaterialStatus = false;
		var hargaMaterialStatus  = false;
		var namaMaterialStatus   = material[0] == '';
		var jumlahMaterialStatus = material[1] == '';

		// overrides
		if( $('input#nama_material-'+id).attr('type') == 'text' ){ // memilih material 'lainnya'
			var satuanMaterialStatus = material[2] == '';
			var hargaMaterialStatus  = material[3] == '';
		}

		return new Array(namaMaterialStatus, jumlahMaterialStatus, satuanMaterialStatus, hargaMaterialStatus);
	}

	// get value
	var material_get = function(id){
		if( $('#nama_material-'+id).attr('type') == 'text' )
			var namaMaterial   = $('input#nama_material-'+id).val();
		else
			var namaMaterial   = $('select#nama_material-'+id).val();

		var satuanMaterial = $('input#satuan_material-'+id).val();
		var hargaMaterial  = $('input#harga_material-'+id).val();
		var jumlahMaterial = $('input#jml_material-'+id).val();

		return new Array(namaMaterial, jumlahMaterial, satuanMaterial, hargaMaterial);
	}

	var material_trigger_error = function(id, status){
		// nama, jumlah, satuan, harga
		if( status[0] ) $('#nama_material-'+id).addClass('error');
		if( status[1] ) $('input#jml_material-'+id).addClass('error');
		if( status[2] ) $('input#satuan_material-'+id).addClass('error');
		if( status[3] ) $('input#harga_material-'+id).addClass('error');
	}

	// collect validator
	var material_validator = function(id){
		var material = material_get(id);
		var status   = material_empty(id);
		
		material_trigger_error(id, status);
	}

	$.validator.addMethod("nama_material", function(value, element) {
		var id = $(element).attr('id').substr("nama_material-".length);
		
		material_validator(id);
		
		return value != '';
	}, "Nama harus dipilih/diisi.");

	// jumlah material dan nama material harus dipilih... harus keduanya diisi.
	$.validator.addMethod("jumlah_material", function(value, element) {
		var id = $(element).attr('id').substr("jml_material-".length);
		material_validator(id);
		
		return value != '' && checkNumber(value);
	}, "Jumlah material harus diisi angka.");


	$.validator.addMethod("satuan_material", function(value, element) {
		if( $(element).attr('readonly') )
			return true;

		var id = $(element).attr('id').substr("satuan_material-".length);
		material_validator(id);
		
		return value != '';
	}, "Satuan harus diisi.");

	$.validator.addMethod("harga_material", function(value, element) {
		if( $(element).attr('readonly') )
			return true;

		var id = $(element).attr('id').substr("harga_material-".length);
		material_validator(id);
		
		return value != '' && checkNumber(value);
	}, "Harga harus diisi angka.");
